﻿Public Class frm_ganancias
    Dim accesoDatos As New AccesoDatos("Venta")
    Dim num As Integer
    Dim numMes As Integer = 0

    'Declaramos variables para el ancho y el alto 
    Dim ancho As Integer
    Dim alto As Integer
    'Variable para la primera ejecución y que no utilice el resize 
    Dim primero As Boolean

    Private Sub cmd_generar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_generar.Click
        Dim sql As String = ""
        Dim tabla As New Data.DataTable

  
        If cmb_año.SelectedIndex = -1 Then
            MessageBox.Show("Seleccione un año", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            cmb_año.Focus()
        Else
            If cmb_meses.SelectedIndex = -1 Then
                Dim reporte As New Reporte_Ganancias_por_mes

                sql = "SELECT MONTH(v.fecha) AS fecha, SUM(p.precioVenta) AS montoVenta, SUM(p.precioVenta) - SUM(p.precioCosto) AS 'ganancias'"
                sql &= " FROM Venta AS v INNER JOIN DetalleVenta AS dv ON v.idVenta = dv.idVenta INNER JOIN Producto AS p ON dv.idProducto = p.idProducto"
                sql &= " WHERE year(v.fecha) = " & cmb_año.Text & " GROUP BY MONTH(v.fecha)"

                tabla = accesoDatos.consulta(sql)

                reporte.SetDataSource(tabla)
                crv_ganancias.ReportSource = reporte

                Me.crv_ganancias.Show()
                Me.crv_ganancias.Refresh()

            Else
                Dim reporte As New ReporteCry
                sql = "SELECT v.fecha, v.idVenta, SUM(p.precioVenta) AS montoVenta, SUM(p.precioVenta) - SUM(p.precioCosto) AS 'Ganancia'"
                sql &= " FROM Venta AS v INNER JOIN DetalleVenta AS dv ON v.idVenta = dv.idVenta INNER JOIN Producto AS p ON dv.idProducto = p.idProducto"
                sql &= " WHERE Month(v.fecha) = " & numMes & " AND year(v.fecha) = " & cmb_año.Text & " GROUP BY v.fecha, v.idVenta"

                tabla = accesoDatos.consulta(sql)

                reporte.SetDataSource(tabla)
                crv_ganancias.ReportSource = reporte

                Me.crv_ganancias.Show()
                Me.crv_ganancias.Refresh()
            End If
        End If
    End Sub


    Private Sub frm_ganancias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim tabla As New Data.DataTable
        'Inicializamos valor a las variables globales. 
        ancho = Me.Width
        alto = Me.Height

        cmb_meses.SelectedIndex = -1
        cmb_año.SelectedIndex = -1
        tabla = accesoDatos.consulta("SELECT DISTINCT YEAR(fecha) AS año FROM Venta AS v")

        For i As Integer = 0 To tabla.Rows.Count - 1
            cmb_año.Items.Add(tabla.Rows(i)(0))
        Next

    End Sub

    'Private Sub cmd_verReporte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_verReporte.Click
    '    Dim dsg As New DataSetGanancias
    '    Dim tabla As New DataSetGanancias.DSgDataTable

    '    'NO ANDA EL LIMPIAR
    '    'DataSetGanancias.DSgDataTable.Equals(
    '    'dsg.DSg.Rows.Clear()

    '    'DataSetGanancias.DSganancias.Rows.Clear()
    '    For i = 0 To dgv_ganancias.RowCount - 1
    '        dsg.DSg.Rows.Add(dgv_ganancias.Rows(i).Cells(0).Value, dgv_ganancias.Rows(i).Cells(1).Value, dgv_ganancias.Rows(i).Cells(2).Value, dgv_ganancias.Rows(i).Cells(3).Value)
    '    Next

    '    With frm_informeGanancias
    '        .ReporteCry1.SetDataSource(dsg)
    '        .CRV1.ReportSource = frm_informeGanancias.ReporteCry1
    '        .Show()
    '    End With
    'End Sub

    Private Sub frm_ganancias_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        'Por si ocurre algun error inesperado 
        On Error Resume Next
        'Variables para los porcentajes 
        Dim porcancho As Integer
        Dim porcalto As Integer
        ' Aquí evitamos lo innecesario de ajustar cuando la ventana se minimiza 
        If WindowState = FormWindowState.Minimized Then
            'Simplemente salimos del procedimiento. 
            Exit Sub
        End If
        'Si es la primera ejecución... 
        If primero = False Then
            'Damos valor verdadero a la variable para la próxima 
            primero = True
            'Salimos 
            Exit Sub
        End If
        'Obtenemos los porcentaje de ancho y alto 
        porcancho = FormatNumber((Me.Width * 100) / ancho, 2)
        porcalto = FormatNumber((Me.Height * 100) / alto, 2)
        'recorremos absolutamente todos los controles. 
        For Each CControl As Control In Me.Controls
            'Asignamos la nueva posición y dimensión. 
            CControl.Top = (CControl.Top * porcalto) / 100
            CControl.Left = (CControl.Left * porcancho) / 100
            CControl.Width = (CControl.Width * porcancho) / 100
            CControl.Height = (CControl.Height * porcalto) / 100
        Next
        'A las variables globales a nivel del formulario 
        'Le asignamos el actual valor. 
        ancho = Me.Width
        alto = Me.Height
    End Sub

    Private Sub cmb_meses_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_meses.SelectedIndexChanged
        If cmb_meses.Text = "Enero" Then
            numMes = 1
        ElseIf cmb_meses.Text = "Febrero" Then
            numMes = 2
        ElseIf cmb_meses.Text = "Marzo" Then
            numMes = 3
        ElseIf cmb_meses.Text = "Abril" Then
            numMes = 4
        ElseIf cmb_meses.Text = "Mayo" Then
            numMes = 5
        ElseIf cmb_meses.Text = "Junio" Then
            numMes = 6
        ElseIf cmb_meses.Text = "Julio" Then
            numMes = 7
        ElseIf cmb_meses.Text = "Agosto" Then
            numMes = 8
        ElseIf cmb_meses.Text = "Septiembre" Then
            numMes = 9
        ElseIf cmb_meses.Text = "Octubre" Then
            numMes = 10
        ElseIf cmb_meses.Text = "Noviembre" Then
            numMes = 11
        Else
            numMes = 12
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        cmb_año.SelectedIndex = -1
        cmb_meses.SelectedIndex = -1

    End Sub
End Class